/*
-----------------------------------------------------------------------------
This source file is part of FRAPPER
research.animationsinstitut.de
sourceforge.net/projects/frapper

Copyright (c) 2008-2009 Filmakademie Baden-Wuerttemberg, Institute of Animation 

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software
Foundation; version 2.1 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place - Suite 330, Boston, MA 02111-1307, USA, or go to
http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
-----------------------------------------------------------------------------
*/

//!
//! \file "NodeTypeInterface.h"
//! \brief Header file for NodeTypeInterface class.
//!
//! \author     Stefan Habel <stefan.habel@filmakademie.de>
//! \version    0.21
//! \date       12.02.2009 (last updated)
//!

#ifndef NODETYPEINTERFACE_H
#define NODETYPEINTERFACE_H

#include "FrapperPrerequisites.h"
#include "Node.h"
#include <QtCore/QString>


//!
//! Interface for node type classes.
//!
class FRAPPER_CORE_EXPORT NodeTypeInterface
{

public: // functions

    //!
    //! Creates a node of this node type.
    //!
    //! \param name The name for the new node.
    //! \param parameterRoot A copy of the parameter tree specific for the type of the node.
    //! \return A pointer to the new node.
    //!
    virtual Node * createNode ( const QString &name, ParameterGroup *parameterRoot ) = 0;

};


Q_DECLARE_INTERFACE(NodeTypeInterface, "de.filmakademie.Nodes.NodeTypeInterface/1.1");


#endif